home *** CD-ROM | disk | FTP | other *** search
/ Gekkan Dennou Club 145 / Gekkan Dennou Club - 2000.6 Vol. 145 (Japan).7z / Gekkan Dennou Club - 2000.6 Vol. 145 (Japan) (Track 1).bin / tools / sharp / xc2103.lzh / ASK30 / KANJI_TO.S < prev    next >
Text File  |  1993-09-15  |  3KB  |  197 lines

  1. ********************************************************************************
  2. *
  3. *    部首別漢字 for ASK3
  4. *    Copyright (C) 1992  ACCESS CO.,LTD.
  5. *
  6. ********************************************************************************
  7.     .include    doscall.mac
  8.  
  9.     .xref    _acc
  10.     .xref    _mbuf            *常駐サイズの計算をするため
  11.     .xref    _scanarg
  12.  
  13.     .text
  14.     .even
  15. devhdr:
  16.     .dc.l    -1
  17.     .dc.w    $8000
  18.     .dc.l    str
  19.     .dc.l    intr
  20.     .dc.b    'KNJSEL*/'
  21.  
  22. rqhdr:    .dc.l    0
  23. str:
  24.     move.l    a5,rqhdr
  25.     rts
  26.  
  27. intr:
  28.     movem.l    d0-d7/a0-a6,-(sp)
  29.     move.l    rqhdr,a5
  30.     clr.l    d0
  31.     move.b    2(a5),d0
  32.     tst.b    d0
  33.     bne    notcom
  34.     bsr    init
  35.     move.b    d0,3(a5)
  36.     lsr.w    #8,d0
  37.     move.b    d0,4(a5)
  38.     bra    intr_end
  39. notcom:
  40.     move.b    #$03,3(a5)
  41.     move.b    #$00,4(a5)
  42. intr_end:
  43.     movem.l    (sp)+,d0-d7/a0-a6
  44.     rts
  45.  
  46. init:
  47.     move.l    #50,-(sp)        *ASKのバージョンチェック
  48.     DOS    _KNJCTRL
  49.     addq.l    #4,sp
  50.     cmpi.l    #300,d0
  51.     blt    ask3_not_exist
  52.  
  53.     move.l    a5,-(sp)
  54.     move.l    18(a5),-(sp)        *引数解析
  55.     bsr    _scanarg
  56.     addq.l    #4,sp
  57.     move.l    (sp)+,a5
  58.     tst.l    d0
  59.     bne    argerr
  60.  
  61.     pea.l    _acc            *アクセサリを登録する
  62.     move.l    #60,-(sp)
  63.     DOS    _KNJCTRL
  64.     addq.l    #8,sp
  65.     cmpi.l    #-1,d0
  66.     beq    inierr
  67.  
  68.     pea.l    okmes
  69.     DOS    _PRINT
  70.     addq.l    #4,sp
  71.     move.l    #_mbuf+18,14(a5)
  72.     clr.l    d0
  73.     rts
  74.  
  75. argerr:
  76.     pea.l    usage
  77.     DOS    _PRINT
  78.     addq.l    #4,sp
  79.     bra    inierr
  80. ask3_not_exist:
  81.     pea.l    errmes
  82.     DOS    _PRINT
  83.     addq.l    #4,sp
  84. inierr:    move.w    #$700d,d0
  85.     rts
  86.  
  87.     .data
  88.     .even
  89. okmes    .dc.b    '部首別漢字 for ASK3 Copyright (C) 1992 ACCESS CO.,LTD.',13,10,0
  90. errmes:    .dc.b    'ASKver3.00以上がありません. ',0
  91. usage:    .dc.b    'パラメータを指定してください.(/D辞書パス名)',0
  92.  
  93.     .text
  94.     .even
  95. *
  96. *FPコール62番
  97. *
  98.     .xdef    _sstrtom
  99. _sstrtom:
  100.     link    a6,#0
  101.     bsr    brkget
  102.     move.l    16(a6),-(sp)
  103.     move.l    12(a6),-(sp)
  104.     move.l    8(a6),-(sp)
  105.     move.l    #62,-(sp)
  106.     DOS    _KNJCTRL
  107.     bsr    brkset
  108.     unlk    a6
  109.     rts
  110.  
  111. *
  112. *FPコール63番
  113. *
  114.     .xdef    _chgkind
  115. _chgkind:
  116.     link    a6,#0
  117.     bsr    brkget
  118.     move.l    16(a6),-(sp)
  119.     move.l    12(a6),-(sp)
  120.     move.l    8(a6),-(sp)
  121.     move.l    #63,-(sp)
  122.     DOS    _KNJCTRL
  123.     bsr    brkset
  124.     unlk    a6
  125.     rts
  126.  
  127. *
  128. *ファイルアクセス関数
  129. *
  130.     .xdef    _xopen            *int xopen(u_char *file, short mode);
  131. _xopen:                    *戻り値    0以上    ファイルハンドル
  132.     link    a6,#0            *    0未満    エラーコード
  133.     bsr    brkget
  134.     move.w    14(a6),-(sp)
  135.     or.w    #$0100,(sp)        *辞書ビット立てる
  136.     move.l    8(a6),-(sp)
  137.     DOS    _OPEN
  138.     bsr    brkset
  139.     unlk    a6
  140.     rts
  141.  
  142.     .xdef    _xclose
  143. _xclose:
  144.     bsr    brkget            *int xclose(int fd);
  145.     move.w    6(sp),-(sp)        *戻り値    0以上    ファイルハンドル
  146.     DOS    _CLOSE            *    0未満    エラー
  147.     addq.l    #2,sp
  148.     bsr    brkset
  149.     rts
  150.  
  151.     .xdef    _xseek
  152. _xseek:
  153.     link    a6,#0            *int xseek(int fd, int offset, short mode)
  154.     bsr    brkget            *戻り値    0以上    先頭からのオフセット
  155.     move.w    18(a6),-(sp)        *    0未満    エラー
  156.     move.l    12(a6),-(sp)
  157.     move.w    10(a6),-(sp)
  158.     DOS    _SEEK
  159.     bsr    brkset
  160.     unlk    a6
  161.     rts
  162.  
  163.     .xdef    _fgets
  164. _fgets:
  165.     bsr    brkget            *int fgets(int fd, char *buf)
  166.     move.w    6(sp),-(sp)        *戻り値    0以上    読んだ文字数
  167.     move.l    10(sp),-(sp)        *    -1    EOF
  168.     DOS    _FGETS
  169.     addq.l    #6,sp
  170.     bsr    brkset
  171.     rts
  172.  
  173. *
  174. *一時的に"BREAK OFF"にする
  175. *
  176. brkget:
  177.     move.w    #-1,-(sp)        *ブレークチェックしているか?
  178.     DOS    _BREAKCK
  179.     addq.l    #2,sp
  180.     move.w    d0,brksts        *その情報をセーブする
  181.     clr.w    -(sp)            *ブレークチェックしないに設定
  182.     DOS    _BREAKCK
  183.     addq.l    #2,sp
  184.     rts
  185.  
  186. brkset:
  187.     move.l    d0,-(sp)        *d0保存
  188.     move.w    brksts,-(sp)        *ブレークチェック環境を元に戻す
  189.     DOS    _BREAKCK
  190.     addq.l    #2,sp
  191.     move.l    (sp)+,d0
  192.     rts
  193.  
  194. brksts:    .dc.w    0
  195.  
  196.     .end
  197.